#用Matplotlib可视化模拟骰子的情况
import matplotlib.pyplot as plt

from random import randint

plt.rcParams['font.sans-serif']=['SimHei']#设置字体
plt.rcParams['axes.unicode_minus']=False#坐标轴的负号正常显示

class Die:
    '''一个表示骰子的类'''
    def __init__(self,num_sides=6):
        '''骰子默认为6面'''
        self.num_sides=num_sides

    def roll(self):
        '''返回一个位于1和骰子面数之间的随机值'''
        return randint(1,self.num_sides)

#创建两个D6
die_1=Die()
die_2=Die()

#掷几个骰子并将结果存储在一个列表中
results=[]
for roll_num in range(1000):
    result=die_1.roll()+die_2.roll()
    results.append(result)

#分析结果
frequencies=[]
max_result=die_1.num_sides+die_2.num_sides
for value in range(2,max_result+1):
    frequency=results.count(value)
    frequencies.append(frequency)

#可视化结果
x_data=list(range(2,max_result+1))
y_data=frequencies
for i in range(len(x_data)):
    plt.bar(x_data[i],y_data[i])
plt.title('掷两个骰子 1000次的结果')
plt.xlabel('值',fontsize='small')
plt.ylabel('值的频率',fontsize='small')
#完全显示坐标轴
plt.xticks(ticks=x_data)
plt.yticks(ticks=y_data)

plt.show()

